package com.example.demo.order.dto.request;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import jakarta.validation.constraints.DecimalMin;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import java.math.BigDecimal;

/**
 * @ClassName PaymentRequest
 * @Description 支付请求参数
 * @Author MingChang.Wei
 * @Date 2025/9/26
 **/
@Data
@Schema(description = "支付请求参数")
public class PaymentRequest {
    
    @NotBlank(message = "订单号不能为空")
    @Schema(description = "订单号", example = "ORD202509260001")
    private String orderNo;
    
    @NotBlank(message = "用户名不能为空")
    @Schema(description = "用户名", example = "admin")
    private String username;
    
    @NotNull(message = "支付金额不能为空")
    @DecimalMin(value = "0.01", message = "支付金额必须大于0")
    @Schema(description = "支付金额", example = "99.99")
    private BigDecimal amount;
    
    @NotBlank(message = "支付方式不能为空")
    @Schema(description = "支付方式", example = "ALIPAY", allowableValues = {"ALIPAY", "WECHAT", "BANK_CARD"})
    private String paymentMethod;
    
    @Schema(description = "支付令牌", example = "token_123456789")
    private String paymentToken;
    
    @Schema(description = "时间戳", example = "1695712800000")
    private Long timestamp;
    
    @Schema(description = "签名", example = "A1B2C3D4E5F6")
    private String signature;
    
    @Schema(description = "客户端IP", example = "192.168.1.100")
    private String clientIp;
    
    @Schema(description = "设备信息", example = "iPhone 14 Pro")
    private String deviceInfo;
    
    @Schema(description = "支付描述", example = "订单支付")
    private String description;
}
